#ifndef INTERFACE_H
#define INTERFACE_H

class Cannon;
class Projectile;
class FPSCounter;
class Timer;

class Interface : protected Object
{
    public:
        Interface();
        virtual ~Interface();
        void show_object(Cannon* cannon);
        void move_object();
        void clear_surface();
        void calculateMeter(Cannon* cannon, Projectile* projectile);
        void toggleFps();
        void toggleInterface();

        bool init();
        //bool fpsIsShown()                 {return fpsShown;}
        bool interfaceIsShown()             {return interfaceShown;}

        //SDL_Surface* getFpsCounter()      {return fpsCounter;}
        SDL_Surface* getElapsedTimeMeter()  {return elapsedTimeMeter;}
        SDL_Surface* getRotationMeter()     {return rotationMeter;}
        SDL_Surface* getPowerMeter()        {return powerMeter;}
        SDL_Surface* getDistanceMeter()     {return distanceMeter;}
        SDL_Surface* getXSpeedMeter()       {return XSpeedMeter;}
        SDL_Surface* getYSpeedMeter()       {return YSpeedMeter;}
        SDL_Surface* getHighScoreMeter()    {return highScoreMeter;}

        static std::unique_ptr<Interface> sInstance;
    protected:
    private:
        bool fpsShown;
        bool interfaceShown;
        //SDL_Surface* fpsCounter;
        SDL_Surface* elapsedTimeMeter;
        SDL_Surface* rotationMeter;
        SDL_Surface* powerMeter;
        SDL_Surface* distanceMeter;
        SDL_Surface* XSpeedMeter;
        SDL_Surface* YSpeedMeter;
        SDL_Surface* highScoreMeter;

        TTF_Font* font;
        SDL_Color textColor;
};

#endif // INTERFACE_H
